package qianfeng.com.meijiadaka.myview;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.View;

import com.handmark.pulltorefresh.library.PullToRefreshBase;

import qianfeng.com.meijiadaka.R;


/**
 * Created by Think on 2017/1/9.
 */

public class MyLiveRecycleView extends PullToRefreshBase<RecyclerView>{
    private RecyclerView mRefreshableView=getRefreshableView();
    public MyLiveRecycleView(Context context) {
        super(context);
    }

    public MyLiveRecycleView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyLiveRecycleView(Context context, Mode mode) {
        super(context, mode);
    }
    //滚动方向
    @Override
    public Orientation getPullToRefreshScrollDirection() {
        return Orientation.VERTICAL;
    }
    //创建对应的RecyclerView对象
    @Override
    protected RecyclerView createRefreshableView(Context context, AttributeSet attrs) {
        RecyclerView rv=new RecyclerView(context,attrs);
        //设置id(写在@String)
        rv.setId(R.id.rv);
        //设置是否允许嵌套滑动
        rv.setNestedScrollingEnabled(false);
        return rv;
    }
    //验证是否可以进行下拉刷新
    @Override
    protected boolean isReadyForPullStart() {
        return isTop();
    }

    //验证是否到达上拉加载
    @Override
    protected boolean isReadyForPullEnd() {
        return isBottom();
    }
    //判断是否到达顶部
    private boolean isTop()
    {
        final RecyclerView.Adapter adapter=mRefreshableView.getAdapter();
        //如果未设置Adapter或者adapter没有数据可以下拉刷新
        if(adapter==null||adapter.getItemCount()==0){
            return true;
        }else if(mRefreshableView.getChildAt(0).getTop()>=mRefreshableView.getTop()){
            return true;
        }else {
            return false;
        }
    }
    //判断是否到达底部
    private boolean isBottom()
    {
        //获取到RecyclerView的Adapter
        final RecyclerView.Adapter adapter = mRefreshableView.getAdapter();
        //获取RecyclerView的最后一个item索引
        final int lastItemPosition = mRefreshableView.getChildCount()-1;
        //根据RecyclerView的最后一个item索引得到最后一个view
        View child=mRefreshableView.getChildAt(lastItemPosition);
        //根据最后一个view得到最后一个view的索引
        int index = mRefreshableView.getChildAdapterPosition(child);
        //得到Adapter的item总数
        int itemCount = adapter.getItemCount();

        if(adapter==null||adapter.getItemCount()==0){
            return false;//显示的最后一个条目的view的底边距离小于等于控件的底边距离并且最后一个view的索引等于最后一个adapter的条目
        }else if(mRefreshableView.getChildAt(lastItemPosition).getBottom()<=mRefreshableView.getBottom()&&index == itemCount - 1){
            return true;
        }else {
            return false;
        }

    }
    //设置适配器对象
    public void setAdapter(RecyclerView.Adapter adapter)
    {
        mRefreshableView.setAdapter(adapter);
    }
}
